package exercise;

public class AddDG {

    /**
     * @param args
     * GY
     * 2017年9月7日
     * 递归小试
     */
    public static void main(String[] args) {
        
        int a = 1;
        int b = 100;
        try {
            int sum = addNumber(a, b, 0);
            System.out.println("从"+a+"累加到"+b+"的最后和为:"+sum);
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        int a1 = 6;//需要求阶乘的数
        int s = 1;
        try {
            System.out.println(a1+"的阶乘为:"+multiplyJC(a1, s));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * @param num1
     * @param c
     * @param s
     * @return
     * GY
     * 2017年9月7日
     * num:开始逐一 累加的 起始数
     * c:累加截止点
     * s:累加的起始和
     */
    public static int addNumber(int num1, int lastNum, int s){
        if(num1>lastNum){
            throw new RuntimeException("数据不合规");
        }
        int sum = s+num1;
        if(num1<lastNum){
            sum = addNumber(num1+1, lastNum, sum);
        }
        return sum;
    }

    /**
     * @param number
     * @param s
     * @return
     * GY
     * 2017年9月7日
     * number:需要求阶乘的值
     * s:阶乘值初始化
     */
    public static long multiplyJC(int number,long s){
        if(number<1){
            throw new RuntimeException("数据不合规");
        }
        long sum = s*number;
        if(number>1){
            sum = multiplyJC(number-1, sum);
        }
        return sum;
    }
    
}
